package jdk8;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * JDK8中的流式（Stream）操作
 * JDK8中推出Stream的目的是为了更好的对数据进行处理（排序、统计、映射...）
 * Stream应用的步骤：
 * 1.创建Stream对象
 * 2.执行中间操作（筛选、映射、排序...）
 * 3.终止操作（结束操作）
 */
public class StreamDemo01 {
    public static void main(String[] args) {
        //创建Stream对象
        List<Integer> list1 = Arrays.asList(10,8,3,11,15,7,9,2,6,1,28,94);
        List<Integer> list2 = Arrays.asList(9,3,3,7,9,7,6,6,9);
        //1.对list1的内容进行排序并输出排序结果
        //对集合元素进行排序并输出其结果
        //list.stream().sorted().forEach(System.out::println);
        Stream<Integer> stream = list1.stream();
        //对集合元素进行排序
        Stream<Integer> sorted = stream.sorted();
        //输出排序结果
        sorted.forEach((n)->System.out.println(n));

        //2.对list2的内容进行排序并输出排序结果
        List<Integer> list3=
                list2.stream().distinct() //去重
                        .map(e0->e0*2) //映射操作，将集合中的每个元素乘以2
                        .sorted((e1,e2)->e2-e1) //降序
                        .collect(Collectors.toList()); //将排序结果存储到新的集合中
        System.out.println(list3);
    }
}
